#include <iostream>
#include <vector>
#include<unistd.h> 
#include<pthread.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/wait.h>
#include<sys/resource.h>
#include<thread>
#include<stdio.h>
void daemonsize();
int main()
{
    daemonsize();
    while(1) {
        sleep(1);
        std::cout << "Daemon size: " << getdtablesize() << std::endl;
    }
    return 0;
}

void daemonsize()
{
    pthread_t pid;
    if((pid = fork()) < 0) {
        printf("fork error\n");
    } else {
        if (pid != 0) { //如果是父进程就进行
            exit(0);
        }
    }

    printf("fork error%d\n", pid);

    //创建一个新的会话，脱离原来的进程组和控制终端
    setsid(); 

    //将工作目录切换到根目录
    if(chdir("/") < 0) {
        printf("change directory failed\n");
    }

    int fd = open("/dev/null", O_RDWR);
    dup2(fd, STDIN_FILENO);
    dup2(fd, STDOUT_FILENO);
    dup2(fd, STDERR_FILENO);
    return;
}